Objectizing and animating images

ABSTRACT

Concepts and technologies are described herein for objectizing and animating images. In accordance with the concepts and technologies disclosed herein, a presentation program is configured to import an image, to analyze the image and/or data describing the image, and to identify entities within the image. The presentation program creates objects corresponding to the identified entities, and program presents the identified entities and/or the created objects via a user interface. The presentation program also can be configured to present one or more user interfaces via which a user selects entities and/or objects and specifies or controls animations of the selected entities or objects.

BACKGROUND

Presentation software has become popular for creating and sharing visualand/or audiovisual information. Users often create complex presentationsthat include text and images for marketing efforts, advertising,lectures, and/or for other purposes. An image is typically imported intothe software and stored within a presentation as an object. The imagetherefore can be manipulated in a manner similar to the manner in whichother objects, such as text, are manipulated.

Presentation software has evolved to support animation and other actionsthat can be performed with respect to objects. Thus, users can animatean image and other objects within a presentation. Because the image isrecognized by the presentation software as an object, actions taken withrespect to the image must be taken to the image as a whole. If a userwishes to take an action with respect to less than the entire image, theimage must be exported from the presentation software to a suitableimage editing program. New images can be created within the imageediting software, and the new images can then be imported back into thepresentation software and again stored as objects. This process can,however, be complicated and time consuming and, as a result, may befrustrating to users.

It is with respect to these and other considerations that the disclosuremade herein is presented.

SUMMARY

Concepts and technologies are described herein for objectizing andanimating images and portions of images. In accordance with the conceptsand technologies disclosed herein, a presentation program is configuredto import an image. The presentation program is configured to analyzethe image, and/or data describing the image, and to identify entitieswithin the image. An entity can include a component, sub-component,and/or other part or portion of the subject represented by the image.For example, an entity recognized within an image of an automobile mayinclude a wheel, a tire, and the like.

The presentation program also can be configured to objectize the image.As used herein, “objectizing” refers to a process for identifying one ormore entities within an image, and converting image data correspondingto the recognized entity into an object. The presentation program canpresent one or more user interfaces via which users can select objectsand specify and/or control animations or other processes for theselected objects. Thus, embodiments of the concepts and technologiesdisclosed, herein allow importation of an image and creation of objectscorresponding to entities within the image. As such, users can avoidexporting images from the presentation program to image editingsoftware, creation of new images corresponding to manually definedentities within the image, and importation of the new images into thepresentation program.

According to one aspect, an image is received at a presentation program.The presentation program receives a command to objectize the image. Inresponse to the command to objectize the image, the presentation programanalyzes the image, identifies entities within the image, and createsobjects corresponding to the identified entities. The presentationprogram can present the identified entities, and/or the created objects,via a user interface.

According to another aspect, the presentation program presents a userinterface via which a user selects one or more of the identifiedentities and/or created objects. The presentation program also canpresent a user interface for specifying and controlling animations ofthe selected entities or objects. The presentation program also can beconfigured to store data associated with the animations. The data can bestored as part of a presentation file, or can be stored separately.

It should be appreciated that the above-described subject matter may beimplemented as a computer-controlled apparatus, a computer process, acomputing system, or as an article of manufacture such as acomputer-readable storage medium. These and various other features willbe apparent from a reading of the following Detailed Description and areview of the associated drawings.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intendedthat this Summary be used to limit the scope of the claimed subjectmatter. Furthermore, the claimed subject matter is not limited toimplementations that solve any or all disadvantages noted in any part ofthis disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a system diagram illustrating an exemplary operatingenvironment for the various embodiments disclosed herein.

FIG. 2 is a flow diagram showing aspects of a method for objectizing andanimating images, according to an exemplary embodiment.

FIGS. 3A-3D are user interface diagrams showing aspects of illustrativeuser interfaces for objectizing and animating images, according tovarious embodiments.

FIG. 4 is a computer architecture diagram illustrating an illustrativecomputer hardware and software architecture for a computing systemcapable of implementing aspects of the embodiments presented herein.

DETAILED DESCRIPTION

The following detailed description is directed to concepts andtechnologies for objectizing and animating images. According to theconcepts and technologies described herein, a presentation program isconfigured to import an image, to analyze the image and/or datadescribing the image, and to identify entities within the image. Anentity can include a component, sub-component, and/or other part orportion of the subject represented by the image. The presentationprogram also can be configured to objectize the image.

The presentation program can present one or more user interfaces viawhich users can select objects and specify and/or control animations orother processes for the selected objects. Thus, embodiments of theconcepts and technologies disclosed herein allow importation of an imageinto a presentation program, and creation of objects within thepresentation program, wherein the objects correspond to the entitiesrecognized within the image. As such, the entities within the images canbe animated without exporting images from the presentation program toimage editing software, creating new images corresponding to manuallydefined entities within the image, and/or importing the new images intothe presentation program.

While the subject matter described herein is presented in the generalcontext of program modules that execute in conjunction with theexecution of an operating system and application programs on a computersystem, those skilled in the art will recognize that otherimplementations may be performed in combination with other types ofprogram modules. Generally, program modules include routines, programs,components, data structures, and other types of structures that performparticular tasks or implement particular abstract data types. Moreover,those skilled in the art will appreciate that the subject matterdescribed herein may be practiced with other computer systemconfigurations, including hand-held devices, multiprocessor systems,microprocessor-based or programmable consumer electronics,minicomputers, mainframe computers, and the like.

In the following detailed description, references are made to theaccompanying drawings that form a part hereof, and in which are shown byway of illustration specific embodiments or examples. Referring now tothe drawings, in which like numerals represent like elements throughoutthe several figures, aspects of a computing system, computer-readablestorage medium, and computer-implemented methodology for objectizing andanimating images will be presented.

Referring now to FIG. 1, aspects of one operating environment 100 forthe various embodiments presented herein will be described. Theoperating environment 100 shown in FIG. 1 includes a user device 102. Insome embodiments, the user device 102 operates on or in communicationwith a communications network (“network”) 104, though this is notnecessarily the case. According to various embodiments, thefunctionality of the user device 102 is provided by a personal computer(“PC”) such as a desktop, tablet, or laptop computer system. In otherembodiments, the functionality of the user device 102 is provided byother types of computing systems including, but not limited, to, servercomputers, handheld computers, netbook computers, embedded computersystems, personal digital assistants, mobile telephones, smart phones,or other computing devices. Thus, while the functionality of the userdevice 102 is described herein as being provided by a PC, it should beunderstood that this embodiment is illustrative, and should not beconstrued as being limiting in any way.

According to various embodiments, the user device 102 is configured toexecute an operating system 106 and one or more application programssuch as, for example, a presentation program 108 and/or otherapplication programs. The operating system 106 is a computer program forcontrolling the operation of the user device 102. The applicationprograms are executable programs configured to execute on top of theoperating system to provide various functions. The presentation program108 is an executable program configured to provide an interface forcreating, editing, saving, and sharing presentations, as well asproviding the functionality described herein for objectizing andanimating images.

According to various embodiments, the user device 102 is configured toreceive or store an image 110. In some embodiments, the image 110 isstored at the user device 102 in a memory or other suitable data storagedevice. In the embodiment illustrated in FIG. 1, the image 110 isobtained from an image source 112 that is operating on or incommunication with the network 104. The image source 112 can be anetworked hard drive, a server computer operating on the network 104 orin communication therewith, and/or any other suitable device. The image110 is received at and/or imported by the presentation program 108 foruse within a presentation and/or for other purposes.

The presentation program 108 is configured to create, view, store,and/or share an electronic presentation such as a slideshowpresentation, a movie presentation, an audiovisual presentation, and/orother presentations. According to various embodiments, the functionalityof the presentation program 108 is provided by a member of thePOWERPOINT family of products from MICROSOFT CORPORATION in Redmond,Wash. In other embodiments, the functionality of the presentationprogram 108 is provided by a member of the PRESENTATIONS family ofproducts from COREL CORPORATION in Ottawa, Ontario, a member of theIMPRESS family of products from OPENOFFICE.ORG, a member of the PREZIfamily of products, and/or a member of the KEYNOTE family of productsfrom APPLE CORPORATION in Cupertino, Calif. Because the functionality ofthe presentation program 108 can be provided by other software packages,it should be understood that these embodiments are illustrative, andshould not be construed as being limiting in any way.

In some embodiments, the presentation program 108 is configured toobtain the image 110 and to import the image 110 into a presentation.While typical presentation software treats imported images 110 asgraphic data, embodiments of the presentation program 108 disclosedherein are configured to analyze the image 110, identify entities withinthe image 110, and create objects 114 corresponding to the identifiedentities within the image 110. Thus, the presentation program 108disclosed herein is configured to import an image 110 and create objects114 corresponding to entities within the image 110.

As such, the client device 102 is not required to execute an imageediting program. Typically, presentation software is unable to createthe objects 114, and instead export the image 110 to an image editingprogram. Within the image editing program, new images 110 correspondingto one or more entities within the image 110 must be created andexported back to the presentation program 108. These steps ofimporting/exporting images to and from presentation software and imageediting programs are typically manual processes that consume time andcomputing resources. Thus, embodiments of the concepts and technologiesdisclosed herein allow elimination of the image editing program, as wellas the time and resources associated with recognizing entities withinimages 110 and/or creating images 110 corresponding to the entities.

According to various embodiments of the concepts and technologiesdisclosed herein, the presentation program 108 is configured to receivea command to objectize the image 110. As used herein, the term“objectize” is used to refer to a process by which the presentationprogram 108 analyzes an image 110 to identify one or more entities orcomponents of a subject of the image 110, and creation of objects 114corresponding to the recognized entities. By way of example, if theimage 110 corresponds to a photograph of a galaxy, the presentationprogram 108 can identify stars, planets, or other bodies in the image ofthe galaxy as separate entities. The presentation program 108 also canbe configured to create objects 114 corresponding to each star, planet,or other body identified.

In another example, the image 110 corresponds to a photograph or drawingof an automobile. The presentation program 108 is configured to identifytires, wheels, doors, windows, door handles, headlights, taillights,windshield wipers, and/or other components of the automobile asentities, and to create objects 114 corresponding to these entities.Because the entities are now associated with objects 114, thepresentation program 108 can be used to animate these objects 114. Assuch, the wheels of a car can be rotated, for example, without exportingthe image of the car to an image editing program and creating a newimage of the wheel that is then imported into the presentation program108. It should be understood that these embodiments are illustrative,and should not be construed as being limiting in any way.

The presentation program 108 is further configured to present theobjects 114 created by the presentation program 108 to a user or otherentity for various purposes. According to some embodiments, thepresentation program 108 is configured to present a UI via whichanimations of the objects 114 can be specified and/or controlled by theuser. In some embodiments, as will be described below with reference toFIGS. 3A-3D, the presentation program 108 generates and/or presents oneor more UIs for presenting the identified objects 114, for specifyingand/or controlling animations associated with the identified objects114, and/or for other purposes, Thus, according to some embodiments ofthe concepts and technologies disclosed herein, the presentation program108 is configured to allow users to create and animate objects 114corresponding to entities within images 110 without making use of animage editing program. These and other features of the presentationprogram will be described in more detail herein with reference to FIGS.2-3D.

While FIG. 1 illustrates the image 110 and the objects 114 as separateentities, it can be appreciated from the description herein that theimage 110 and the objects 114 can be stored as application dataassociated with the presentation program 108, if desired. For example,the image 110 and/or the objects 114 can be stored as part of orassociated with, a presentation or other file. Thus, the illustratedembodiment should be understood as being illustrative, and should not beconstrued as being limiting in any way.

FIG. 1 illustrates one user device 102, one network 104, and one imagesource 112. It should be understood, however, that some implementationsof the operating environment 100 include multiple user devices 102,multiple networks 104, and no or multiple image sources 112. Thus, theillustrated embodiments should be understood as being exemplary, andshould not be construed as being limiting in any way.

Turning now to FIG. 2, aspects of a method 200 for objectizing andanimating images 110 will be described in detail. It should beunderstood that the operations of the method 200 are not necessarilypresented in any particular order and that performance of some or all ofthe operations in an alternative order(s) is possible and contemplated.The operations have been presented in the demonstrated order for ease ofdescription and illustration. Operations may be added, omitted, and/orperformed simultaneously, without departing from the scope of theappended claims.

It also should be understood that the illustrated method 200 can beended at any time and need not be performed in its entirety. Some or alloperations of the method 200, and/or substantially equivalentoperations, can be performed by execution of computer-readableinstructions included on a computer-storage media, as defined herein.The term “computer-readable instructions,” and variants thereof, as usedin the description and claims, is used expansively herein to includeroutines, applications, application modules, program modules, programs,components, data structures, algorithms, and the like. Computer-readableinstructions can be implemented on various system configurations,including single-processor or multiprocessor systems, minicomputers,mainframe computers, personal computers, hand-held computing devices,microprocessor-based, programmable consumer electronics, combinationsthereof, and the like.

Thus, it should be appreciated that the logical operations described.herein are implemented (1) as a sequence of computer implemented acts orprogram modules running on a computing system and/or (2) asinterconnected machine logic circuits or circuit modules within thecomputing system. The implementation is a matter of choice dependent onthe performance and other requirements of the computing system.Accordingly, the logical operations described herein are referred tovariously as states, operations, structural devices, acts, or modules.These operations, structural devices, acts, and modules may beimplemented in software, in firmware, in special purpose digital logic,and any combination thereof.

For purposes of illustrating and describing the concepts of the presentdisclosure, the method 200 is described as being performed by thepresentation program 108, which has been described herein as beingexecuted in some embodiments by the user device 102. It should beunderstood that these embodiments are exemplary, and should not beviewed as being limiting in any way. In particular, other devices inaddition to or instead, of the user device 102 can provide thefunctionality described herein by execution of any suitable program inaddition to, or instead of, the presentation program 108.

The method 200 begins at operation 202, wherein an image 110 is importedby the presentation program 108. According to various implementations ofthe concepts and technologies disclosed herein, the image 110 cancorrespond to any type of image or other graphical information. Thus,the image 110 can be stored in any desired format including, but notlimited to open and/or proprietary image formats. According to someembodiments, the image 110 is a photograph or other type of visualinformation. As such, some embodiments of the presentation program 108are configured to recognize the image 110 as a single object 114. Inparticular, as is generally understood, objects 114 created or importedinto the presentation program 108 such as images 110, text, clip art,and the like, can be worked with and can be recognized. by thepresentation program 108 as objects 114. These objects can be modifiedand/or manipulated using various operations. Because images 110 aretreated as single objects 114 by the presentation program, only theentire image 110 can be manipulated as an object 114. According tovarious embodiments of the concepts and technologies disclosed herein,however, the presentation program 108 is configured to recognizeentities within the image 110, and to create objects 114 correspondingto the recognized entities. These and other features of the presentationprogram 108 disclosed herein will be described in more detail below.

In operation 202, the image 110 is imported by the presentation program108 in response to one or more user commands. For example, a user mayselect an option to import the image 110. In response to the command toimport the image 110, the presentation program 108 can import the image110 in a format appropriate for the presentation program 108 such as abitmap image, a jpeg image, a gif image, a png image, and/or as graphicsdata in any other suitable format. The presentation program 108 canrecognize the image 110 as graphical information and may treat theentire image 110 as a single object 114.

According to various implementations, the image 110 is obtained fromstorage at the user device 102. In other embodiments, the image 110 isstored at a remote storage location such as the image source 112described herein. As such, it should be understood that the image 110can be obtained from any suitable location and imported into thepresentation program 108 via a direct connection, via one or morenetworks, and/or via other suitable entities, devices, and/or devicecomponents.

From operation 202, the method 200 proceeds to operation 204, whereinthe presentation program 108 receives a command to objectize the image110. As used herein, a command to objectize the image 110 corresponds toa command to recognize entities within the image 110 and to createobjects 114 corresponding to the graphical data associated with theserecognized entities. As such, the presentation program 108 is configuredto recognize entities within the image 110, and to create objects 114corresponding to these entities to allow a user to work with thegraphical data corresponding to the entities within the presentationprogram 108. An example UI for receiving the command to objectize theimage 110 is illustrated and described below with reference to FIG. 3A.

From operation 204, the method 200 proceeds to operation 206, whereinthe presentation program 108 creates objects 114 corresponding to theentities recognized within the image 110. As noted above, the objects114 can correspond to graphical data associated with entities within theimage 110, For example, if the image 110 corresponds to a house, thepresentation program 108 may recognize doors, windows, and/or otherentities within the image 110 and can create objects 114 correspondingto these entities. Similarly, if the image 110 corresponds to anautomobile, the presentation program 108 can recognize the tires,wheels, door handles, windows, windshield wipers, and/or other entitieswithin the image 110 and can create objects 114 corresponding to theseentities. Other examples of entities or components of an image 110 arecontemplated but are not described herein in additional detail.

The recognition of entities within an image 110 can be accomplished bythe presentation program 108 via a number of processes. In someembodiments, for example, the presentation program 108 presents a userinterface (“UI”) to allow a user to specify the entities in the image110. For example, a user may select, via the a planet within an image110 of a solar system, a star within an image 110 of a galaxy, a buttonwithin an image 110 of a keyboard, and/or another entity within an image110. In response to the selection of the entity by the user, and in someembodiments input indicating that the entity is to be converted into anobject 114, the presentation program 108 converts the graphical datacorresponding to the entity into an object 114. It should be understoodthat these embodiments are illustrative, and should not be construed asbeing limiting in any way.

In other embodiments, the presentation program 108 is configured toautomatically detect entities in an image 110 and present the identifiedentities to a user. According to various implementations, thepresentation program 108 can include various modules for identifying theentities within the image 110. The modules can include, for example, anedge detection module for identifying edges of an entity captured in theimage 110, a color difference recognition module for recognizing colordifferences, and. hence the presence of entities, within the image,and/or other modules.

Because objects depicted in the image 110 can be oriented in variousorientations relative to a camera or artist viewpoint, the presentationprogram 108 can have extensive libraries for identifying objects in theimage 110. These libraries can be updated at any time and/or can belinked to various other object libraries to improve the functionality ofthe presentation program 108 for recognizing objects in the image 110.Thus, for example, if a picture of a car is oriented at a three-quarteror other perspective view, or if the wheels of the car are turned towardthe camera or artist viewpoint, the presentation program 108 cannonetheless be configured to recognize the wheels based upon a contextof the image 110 and/or colors, patterns, edges, or other aspects of theimage 110. Thus, the scope of the object-recognition functionality ofthe presentation program 108 disclosed herein is not limited in any wayby orientation, color, and/or other aspects of objects in the image 110.

In some embodiments, the presentation program 108 is configured toanalyze metadata associated with the image 110 and/or to perform imagerecognition processes on the image 110 instead of, or in addition to,using one or more of the above-mentioned modules or other modules torecognize entities within the image 110. Thus, the presentation program108 can use the metadata or image recognition processes to create anexpected. set of entities within the image 110. For example, if metadataor image recognition suggests that the image 110 includes a person, thepresentation program 108 can determine that expected entities within theimage 110 include eyes, a mouth, a nose, ears, and the like. Similarly,if metadata or image recognition processes suggest that the image 110includes an automobile, the presentation program 108 can determine thatexpected entities within the image 110 include tires, wheels, doorhandles, windows, and the like. It should be understood that theseembodiments are illustrative, and should not be construed as beinglimiting in any way. An example UI for presenting the identified objects114 to a user is illustrated and described below with reference to FIG.3B.

From operation 206, the method 200 proceeds to operation 208, whereinthe presentation program 108 presents a UI for allowing a user tospecify and control one or more animations for the one or more of theobjects 114 identified in operation 206. The UI presented in operation208 can include UI controls for selecting identified objects 114 and/orfor specifying and controlling animations associated with the selectedobjects 114. Two example UIs for controlling animation of the objects114 are illustrated and described below with reference to FIGS. 3C-3D.

From operation 208, the method 200 proceeds to operation 210, whereinthe presentation program 108 receives input for animating the objects114. As explained above with reference to operation 208, the inputreceived in operation 210 can correspond to input identifying theobjects 114 that are to be animated, as well as animation controlsrelating to the selected objects 114. The example UIs shown in FIGS.3C-3D can be used to receive the input from the user, and will bedescribed in more detail below. It should be understood that operation210 can be repeated for any number of objects 114 and/or animationsapplied to the respective objects 114. Thus, operation 210 of the method200 can be iterated any number of times, if desired.

From operation 210, the method 200 proceeds to operation 212, whereinthe presentation program 108 saves the object animations specified inoperation 210. Data describing the object animations can be stored aspart of the presentation, if desired, or can be stored separately fromthe presentation data. From operation 212, the method 200 proceeds tooperation 214. The method 200 ends at operation 214.

Turning now to FIG. 3A, a UI diagram showing aspects of a UI forobjectizing and animating images in some embodiments will be described.As explained above with regard to FIG. 2, the UI illustrated in FIG. 3Acan be, but is not necessarily, presented in operation 204 of the method200. In particular, FIG. 3A shows a screen display 300A generated by thepresentation program 108 for generating a presentation such as a slideshow, a movie presentation, an audiovisual presentation, and/or othertypes of presentations. It should be appreciated that the UI diagramillustrated in FIG. 3A is illustrative of one contemplated embodiment,and therefore should not be construed as being limited in any way.

In the illustrated embodiment, the screen display 300A is configured topresent an interface for creating slides of a slide show presentation.An example slide 302 is shown in FIG. 3A. It can be appreciated thatvarious menus, icons, command ribbons, and/or other UIs for controllingthe functionality of the presentation program 108 can be presented onthe screen display 300A, although these and other aspects of thepresentation program 108 are not illustrated in FIG. 3A. In the exampleslide 302, an image 304 has been imported, for example during theoperation 202 of the method 200 illustrated in FIG. 2. Of course, theimage 304 shown in FIG. 3A is illustrative, and should not be construedas being limited in any way.

As discussed above with reference to operation 204 of the method 200illustrated in FIG. 2, the presentation program 108 can receive acommand to objectize an image 110 such as the image 304 imported intothe presentation program 108. The command received in operation 204 canbe received in any suitable manner. In the embodiment illustrated inFIG. 3A, the command to objectize the image 304 is received by thepresentation program 108 via a gesture such as a mouse hover action, amouse button click, a voice command, a touch gesture, a gesture in freespace, a keyboard command, and/or another action. In response to thegesture, the presentation program 108 is configured to display an imagemenu 306. In the illustrated embodiment, the user has right-click inputwith a mouse or other input device, and the image menu 306 is displayedin response thereto. Because other forms of input are contemplated, theillustrated embodiment should be understood as being illustrative, andshould not be construed as being limited in any way.

In particular, in some embodiments, the presentation program 108 isexecuted by a device that uses other input devices for interfacing withusers. For example, the presentation program 108 can be executed on asmartphone, a tablet device, or other device that uses a touch screen, astylus, keyboard-only commands, voice commands, and/or other input tointeract with the presentation program 108. As such, the image menu 306shown in FIG. 3A can also be displayed in response to a touch gesture, amulti-touch gesture, a voice command such as “image menu,” a stylustouch over a UI control for displaying the image menu 306 and/or othercommands or inputs.

The image menu 306 includes various actions that can be taken withrespect to the image 304. The illustrated image menu 306 includesoptions for cutting, copying, and/or pasting the image 304, accessingproperties for the image 304, and/or formatting the image 304. The imagemenu 306 also includes an option 308 for objectizing the image 304. Inthe illustrated embodiment, a user has hovered a mouse pointer over ornear the option 308 for objectizing the image 304, and the option 308 istherefore illustrated as highlighted or selected. If the user selectsthe option 308, the presentation program 108 can objectize the image304, as described above with reference to FIG. 2.

As noted above, other input devices are contemplated, so the hovering ofthe mouse pointer over or near the option 308 should be understood asbeing illustrative. A user can select the option 308 by speaking a voicecommand, by touching a touch or multi-touch screen, by entering akeystroke or combination of keystrokes, and/or by entering other inputsor commands. As such, it should be understood that the illustratedembodiment is illustrative, and should not be construed as beinglimiting in any way.

Referring now to FIG. 3B, a UI diagram showing additional aspects of aUI for objectizing and animating images in some embodiments is describedin detail. As explained above with regard to FIG. 2, the UI illustratedin FIG. 3B can be, but is not necessarily, presented in operation 208 ofthe method 200, if desired. For example, the user can select the option308 shown in FIG. 3A, and the presentation program 108 can objectize theimage 304 in response thereto. The presentation program 108 also can beconfigured to generate the UI illustrated in FIG. 3B for presenting therecognized objects 114. It should be understood that this embodiment isillustrative, and should not be construed as being limiting in any way.

FIG. 3B shows a screen display 300B generated by the user device 102 topresent a UI for presenting objects 114 recognized in the image 304. Inthe illustrated embodiment, the screen display 300B includes anidentified objects area 310 for presenting objects 312A-C (hereinaftergenerically and/or collectively referred to as objects 312). In theexample embodiment shown in FIG. 3B, the identified objects 312 includea front wheel 312A, a rear wheel 312B, and a door handle 312C. Althoughnot shown in FIG. 3B, additional and/or alternative objects 312recognized in the image 304 can be displayed in the identified objectsarea 310 and accessed using a slider bar or other UI control forscrolling or otherwise accessing other non-displayed space associatedwith the identified objects area 310. Also, as noted above, a user canuse touch commands such as finger or stylus touches or swipes, voicecommands, and/or other input to access non-displayed space instead of,or in addition to, a slider bar or other UI control. Thus, the describedand illustrated embodiments should understood as being illustrative andshould not be construed as being limited in any way.

A user can select one or more of the objects 312 and thereby access oneor more menus for animating the selected objects 312, as will beexplained in more detail with reference to FIGS. 3C-3D. For purposes ofillustrating the concepts and technologies disclosed herein, FIGS. 3C-3Dare described as being presented in response to a user selecting therear wheel 312B. It should be understood that this embodiment isillustrative, and should not be construed as being limiting in any way.

Referring now to FIG. 3C, a UI diagram showing additional aspects of aUI for objectizing and animating images 110 in some embodiments isdescribed in detail. As explained above with regard to FIG. 2, the UIillustrated in FIG. 3C can be, but is not necessarily, presented inoperations 208-210 of the method 200. In the illustrated example, theuser has selected the object 312B in FIG. 3B, and the presentationprogram 108 presents the UI illustrated in FIG. 3C in response to theselection. It should be understood that this embodiment is illustrative,and should not be construed as being limiting in any way.

FIG. 3C shows a screen display 300C generated by the presentationprogram 108 to provide an interface for animating the selected object312B. In the illustrated embodiment, the screen display 300C includes aselected object area 320, which displays the object 312B selected by theuser. The screen display 300C also provides an indication 322 foridentifying to the user the selected object 312B within the image 304.It should be understood that the indication 322 can help a user identifythe selected object 312B in context with respect to the remainder of theimage 304. In some embodiments, the indication 322 is helpful for users,particularly in cases in which multiple similar or identical objects 312relate to an image 304.

While a box is used as the indication 322, other embodiments arepossible and contemplated. For example, in some embodiments, theselected object 312B is displayed in its location within the image 304,and the remainder of the image 304 is displayed at a reduced brightnessor contrast. In other embodiments, only the selected object 3128 isdisplayed and the remainder of the image 304 is hidden from view. Otherembodiments are possible and are contemplated. As such, it should beunderstood that the illustrated embodiment is illustrative of onecontemplated. embodiment, and should not be construed as being limitingin any way.

The screen display 300C also shows an object animation menu 324 Theobject animation menu 324 includes UI controls 326A-D for applyinganimations to the selected object 312B, The object animation menu 324also includes a UI control 328 for accessing additional or alternativeUI controls (not shown) for animating the selected object 312B. As notedabove, various controls and input devices can be used to control variousaspects of the presentation program 108. Thus, while the UI controls326, 328 are shown as rectangular icons, it should be understood thatother types of controls 326, 328 and/or other methods of issuingcommands can be used to control the presentation program 108. As such,it should be understood that the illustrated embodiments areillustrative, and should not be construed as being limiting in any way.

In response to selecting one of the UI controls 326, or entering acommand or input via any other suitable device or manner, thepresentation program 108 can provide animation options. Thus, a user canaccess animation options that can be set with respect to the selectedobject 312B. An example UI for setting animation options with respect toselected objects 312 is illustrated and described below with referenceto FIG. 3. It should he understood that various embodiments for settinganimation options are possible and are contemplated, and that as such,the UI shown in FIG. 3D is illustrative.

In some embodiments, a user selects one or more of the objects 312 bydragging and dropping representations of the objects 312 into the slide302. The dragging and dropping can be accomplished by manipulating amouse and mouse button, by entering keystroke commands, by using afinger or stylus to select and/or drag the objects 312, and/or via othertypes of input. Thus, in some embodiments, the user can select arepresentation of the object 312 within the area occupied by the slide302 instead of, or in addition to, selecting the objects 312 displayedin the identified objects area 310 show in FIG. 3B and/or the selectedobject area 320 shown in FIG. 3C. As such, the embodiments describedherein with reference to FIGS. 3A-3D should be understood as beingillustrative, and should not be construed as being limited in any way.

FIG. 3D shows a screen display 300D generated by the presentationprogram 108 for setting animation options for the selected object 312B.In the illustrated embodiment, the screen display 300D includes anobject animation option window 330 for displaying animation optionsassociated with a chosen animation. As shown in FIG. 3D, the objectanimation option window 330 can be displayed, for example, in responseto a touch command entered by a user and/or in response to any otherinput or commands. In the illustrated example, the illustrated objectanimation option window 330 includes various options for rotating theselected. object 312B, and the various options have been presented inresponse to selection of the UI control 326A corresponding to a rotationanimation. As such, the UI control 326A is shown as having beenselected. It should be understood that this embodiment is illustrative,and should not be construed as being limiting in any way. Furthermore,it should be understood that any effects and/or types of effects can beprovided within the object animation option window 330, and that theoptions are not limited to the illustrated options.

The object animation option window 330 includes a UI control 332 forsetting a rotation angle for the selected object 312B. The objectanimation option window 330 also includes a UI control 334 for settingan animation duration. In the illustrated example, the user hasspecified a rotation angle of three hundred sixty degrees, and that thethree hundred sixty degree rotation is to be completed in two seconds.It should be understood that this embodiment is illustrative, and shouldnot be construed as being limiting in any way.

The object animation option window 330 also includes a UI control 336for looping the animation associated with the selected object 312B. Ifthe UI control 336 is selected, the presentation program 108 can beconfigured to replay the animation a set number of times or infinitelyuntil the slide is advanced or other similar actions are taken withrespect to other types of presentations. Thus, in the illustratedembodiment, the object 312B can be rotated three hundred sixty degreesevery two seconds if the UI control 336 corresponding to the loopfeature is selected. Although not shown in FIG. 3D, the object animationoption window 330 also can include a UI control for inputting a numberof times the animation is to be played or repeated. Other options arepossible and are contemplated.

A user or other entity can select the UI control 338 for cancelling theanimation of the selected object 312B and/or the UI control 340 foraccepting the animation of the selected object 312B. If the UI control340 is selected, the presentation program 108 can be configured to storedata describing or specifying the animations configured by the user, asdescribed above with reference to operation 212 of FIG. 2. If the UIcontrol 338 is selected, data describing the animations can bediscarded. As such, the presentation program 108 is configured toprovide various UIs for importing an image 110 into the presentationprogram 108, identifying entities within the image 110, creating objects114 corresponding to the entities, and receiving and storing data foranimating the created objects 114.

FIG. 4 illustrates an exemplary computer architecture 400 for a devicecapable of executing the software components described herein forobjectizing and animating images. Thus, the computer architecture 400illustrated in FIG. 4 illustrates an architecture for a server computer,mobile phone, a PDA, a smart phone, a desktop computer, a netbookcomputer, a tablet computer, laptop computer, and/or other suitablecomputing devices. The computer architecture 400 may be utilized toexecute any aspects of the software components presented herein.

The computer architecture 400 illustrated in FIG. 4 includes centralprocessing unit 402 (“CPU”), a system memory 404, including a randomaccess memory 406 (“RAM”) and a read-only memory (“ROM”) 408, and asystem bus 410 that couples the memory 404 to the CPU 402. A basicinput/output system containing the basic routines that help to transferinformation between elements within the computer architecture 400, suchas during startup, is stored in the ROM 408. The computer architecture400 further includes a mass storage device 412 for storing the operatingsystem 106 and the presentation program 108. In some embodiments, themass storage device 412 also can be configured to store the image 110and/or the objects 114.

The mass storage device 412 is connected to the CPU 402 through a massstorage controller (not shown) connected to the bus 410. The massstorage device 412 and its associated computer-readable media providenon-volatile storage for the computer architecture 400 Although thedescription of computer-readable media contained herein refers to a massstorage device, such as a hard disk or CD-ROM drive, it should beappreciated by those skilled in the art that computer-readable media canbe any available computer storage media or communication media that canbe accessed by the computer architecture 400.

Communication media includes computer readable instructions, datastructures, program modules, or other data in a modulated data signalsuch as a carrier wave or other transport mechanism and includes anydelivery media. The term “modulated data signal” means a signal that hasone or more of its characteristics changed or set in a manner as toencode information in the signal. By way of example, and not limitation,communication media includes wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, RF,infrared and other wireless media. Combinations of the any of the aboveshould also be included within the scope of computer-readable media.

By way of example, and not limitation, computer storage media mayinclude volatile and non-volatile, removable and non-removable mediaimplemented in any method or technology for storage of information suchas computer-readable instructions, data structures, program modules orother data. For example, computer media includes, but is not limited to,RAM, ROM, EPROM, EEPROM, flash memory or other solid state memorytechnology, CD-ROM, digital versatile disks (“DVD”), HD-DVD, BLU-RAY, orother optical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed bythe computer architecture 400. For purposes the claims, the phrase“computer storage medium” and variations thereof, does not includewaves, signals, and/or other transitory and/or intangible communicationmedia, per se.

According to various embodiments, the computer architecture 400 mayoperate in a networked environment using logical connections to remotecomputers through a network such as the network 104. The computerarchitecture 400 may connect to the network 104 through a networkinterface unit 414 connected to the bus 410. It should be appreciatedthat the network interface unit 414 also may be utilized to connect toother types of networks and remote computer systems, for example, theimage source 112 and/or other entities, if desired. The computerarchitecture 400 also may include an input/output controller 416 forreceiving and processing input from a number of other devices, includinga keyboard, mouse, or electronic stylus (not shown in FIG. 4).Similarly, the input/output controller 416 may provide output to adisplay screen, a printer, or other type of output device (also notshown in FIG. 4).

It should be appreciated that the software components described hereinmay, when loaded into the CPU 402 and executed, transform the CPU 402and the overall computer architecture 400 from a general-purposecomputing system into a special-purpose computing system customized tofacilitate the functionality presented herein. The CPU 402 may beconstructed from any number of transistors or other discrete circuitelements, which may individually or collectively assume any number ofstates. More specifically, the CPU 402 may operate as a finite-statemachine, in response to executable instructions contained within thesoftware modules disclosed herein. These computer-executableinstructions may transform the CPU 402 by specifying how the CPU 402transitions between states, thereby transforming the transistors orother discrete hardware elements constituting the CPU 402.

Encoding the software modules presented herein also may transform thephysical structure of the computer-readable media presented herein. Thespecific transformation of physical structure may depend on variousfactors, in different implementations of this description. Examples ofsuch factors may include, but are not limited to, the technology used toimplement the computer-readable media, whether the computer-readablemedia is characterized as primary or secondary storage, and the like.For example, if the computer-readable media is implemented assemiconductor-based memory, the software disclosed herein may be encodedon the computer-readable media by transforming the physical state of thesemiconductor memory. For example, the software may transform the stateof transistors, capacitors, or other discrete circuit elementsconstituting the semiconductor memory. The software also may transformthe physical state of such components in order to store data thereupon.

As another example, the computer-readable media disclosed herein may beimplemented using magnetic or optical technology. In suchimplementations, the software presented herein may transform thephysical state of magnetic or optical media, when the software isencoded therein. These transformations may include altering the magneticcharacteristics of particular locations within given magnetic media.These transformations also may include altering the physical features orcharacteristics of particular locations within given optical media, tochange the optical characteristics of those locations. Othertransformations of physical media are possible without departing fromthe scope and spirit of the present description, with the foregoingexamples provided only to facilitate this discussion.

In light of the above, it should be appreciated that ninny types ofphysical transformations take place in the computer architecture 400 inorder to store and execute the software components presented herein. Italso should be appreciated that the computer architecture 400 mayinclude other types of computing devices, including hand-held computers,embedded computer systems, personal digital assistants, and other typesof computing devices known to those skilled in the art. It is alsocontemplated that the computer architecture 400 may not include all ofthe components shown in FIG. 4, may include other components that arenot explicitly shown in FIG. 4, or may utilize an architecturecompletely different than that shown in FIG. 4.

In some embodiments, some, all, or none of the elements of the computerarchitecture 400 illustrated and described herein are provided by one ormore virtual computing resources and/or distributed computing resources.Thus, the computer architecture 400 can correspond to resourcesoperating or executing on a network such as the network 104. In someembodiments, for example, the functionality of the CPU 402 can beprovided by a processing resource provided by one or more servercomputers executing on a network, and the functionality of the systemmemory 404 can be provided by one or more network storage devices suchas, for example, a datastore, a server computer, and/or other devices.As such, it should be understood that virtual computing resources orother distributed computing environments can execute any aspects of thesoftware components disclosed herein.

Based on the foregoing, it should be appreciated that technologies forobjectizing and animating images have been disclosed herein. Althoughthe subject matter presented herein has been described in languagespecific to computer structural features, methodological andtransformative acts, specific computing machinery, and computer readablemedia, it is to be understood that the invention defined in the appendedclaims is not necessarily limited to the specific features, acts, ormedia described herein. Rather, the specific features, acts and mediumsare disclosed as example forms of implementing the claims.

The subject matter described above is provided by way of illustrationonly and should not be construed as limiting. Various modifications andchanges may be made to the subject matter described herein withoutfollowing the example embodiments and applications illustrated anddescribed, and without departing from the true spirit and scope of thepresent invention, which is set forth in the following claims.

1. A computer-implemented method for animating objects, thecomputer-implemented method comprising performing computer-implementedoperations for: importing an image into a presentation program;receiving a command to objectize the image; recognizing an entity withinthe image; creating an object corresponding to the recognized entity;and receiving input for animating the object.
 2. The method of claim 1,further comprising presenting a user interface comprising a userinterface control for objectizing the image, the selection of whichcauses the presentation program to objectize the image.
 3. The method ofclaim 2, wherein recognizing the entity within the image is performed inresponse to selection of the user interface control.
 4. The method ofclaim 1, wherein the entity comprises a portion of the image.
 5. Themethod of claim 1, wherein recognizing the entity comprises: analyzingmetadata describing the image; determining expected entities within theimage, based at least partially upon the analyzing; searching the imagefor the expected entities; and identifying at least one of the expectedentities within the image.
 6. The method of claim 1, wherein recognizingthe entity comprises: performing an image recognition process on theimage; determining expected entities within the image, based at leastpartially upon the image recognition process; searching the image forthe expected entities; and identifying at least one of the expectedentities within the image.
 7. The method of claim 1, wherein recognizingthe entity comprises at least one of recognizing an entity within theimage based upon an edge recognition process, or recognizing an entitywithin the image based upon a color difference recognition process. 8.The method of claim 1, wherein recognizing the entity comprises:presenting a user interface for selecting a portion of the image; andreceiving user input for identifying the portion of the image.
 9. Themethod of claim 1, further comprising: presenting a user interface forallowing selection of the created object; and receiving, via the userinterface, a command for selecting the created object.
 10. The method ofclaim 9, further comprising: presenting a user interface control forcontrolling an animation associated. with the selected object; detectingmanipulation of the user interface control; and modifying animation ofthe created object, in response to detecting the manipulation of theuser interface control.
 11. A computer-implemented method for animatingobjects, the computer-implemented method comprising performingcomputer-implemented operations for: importing an image into apresentation program; receiving, at the presentation program, a commandto objectize the image; in response to the command to objectize theimage, analyzing the image to identify an entity within the image, theentity comprising a portion of the image; recognizing the entity withinthe image; creating an object corresponding to the entity within theimage; presenting a user interface for receiving input for selecting theobject; presenting a farther user interface for receiving input foranimating the object; and storing data for animating the object based,at least partially, upon input received via the further user interface.12. The method of claim 11, further comprising presenting a userinterface control, the selection of which causes the presentationprogram to objectize the image, wherein recognizing the entity withinthe image is performed in response to selection of the user interfacecontrol.
 13. The method of claim 11, wherein recognizing the entitycomprises: determining expected entities within the image; searching theimage for the expected entities; and identifying at least one of theexpected entities within the image.
 14. The method of claim 11, whereinrecognizing the entity comprises recognizing an entity within the imagebased upon one or more of an edge recognition process or a colordifference recognition process.
 15. The method of claim 11, furthercomprising: presenting a user interface control for selecting thecreated object; and receiving, via manipulation of the user interface, acommand for selecting the created object.
 16. The method of claim 15,further comprising: presenting a further user interface control forcontrolling an animation associated with the selected object; detectingmanipulation of the user interface control; and modifying animation ofthe created object, in response to detecting the manipulation of theuser interface control.
 17. A computer storage medium having computerreadable instructions stored thereupon that, when executed by acomputer, cause the computer to: import an image into a presentationprogram; present a user interface control, the selection of which causesthe presentation program to objectize the image; receive, at thepresentation program, selection of the user interface control forobjectizing the image; in response to receiving selection of the userinterface control for objectizing the image, analyze the image toidentify an entity within the image, the entity comprising a portion ofthe image; recognize the entity within the image; create an objectcorresponding to the entity recognized within the image; present a userinterface for receiving input for selecting the object); present afurther user interface for receiving input for animating the object; andstore data for animating the object based, at least partially, uponinput received via the further user interface.
 18. The computer storagemedium of claim 17, wherein recognizing the entity comprises recognizingan entity within the image based upon one or more of an edge recognitionprocess or a color difference recognition process.
 19. The computerstorage medium of claim 17, further comprising computer executableinstructions that, when executed by the computer, cause the computer to:present a user interface control for selecting the created object; andreceive, via manipulation of the user interface, a command for selectingthe created object.
 20. The computer storage medium of claim 19, furthercomprising computer executable instructions that, when executed by thecomputer, cause the computer to: present a further user interfacecontrol for controlling an animation associated with the selectedobject; detect manipulation of the user interface control; and modifyanimation of the created object, in response to detecting themanipulation of the user interface control.